<?  
 /** 
* @generator Le Classificateur 2.01 beta 
* @author Yann Boisclair-Roy 
* @date 2008/02/25
* @desc Classe qui contrôle les données de la table montagnes
*/  
 
 class Montagnes {

 	/**
 	* @desc Flag qui détermine si la recherche devra se faire avec des LIKE '%%' ou des " = "
 	* @var boolean
 	*/
 	var $rechercheExact = true; 
 
 	/**
 	* @desc Objet de connexion à la base de données
 	* @var Bd
 	*/
 	var $oBd; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera l'ordre selon les voeux de l'usager
 	* @var string
 	*/
 	var $ordre; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera la limite selon les voeux de l'usager
 	* @var String
 	*/
 	var $limite; 
 	/**
 	* @desc Variable qui contient un Array des résultats provenant de la requête SQL par GetInfos
 	* @var Array
 	*/
 	var $resultat; 
 	/**
 	* @desc Variables équivalente au champs noMontagne de la table montagnes
 	* @var int
 	*/
 	 var $noMontagne;
 
 	/**
 	* @desc Variables équivalente au champs nom de la table montagnes
 	* @var String
 	*/
 	 var $nom;
 
 	/**
 	* @desc Variables équivalente au champs description de la table montagnes
 	* @var mixed
 	*/
 	 var $description;
 
 	/**
 	* @desc Variables équivalente au champs latitude de la table montagnes
 	* @var mixed
 	*/
 	 var $latitude;
 
 	/**
 	* @desc Variables équivalente au champs longitude de la table montagnes
 	* @var mixed
 	*/
 	 var $longitude;
 
 	/**
 	* @desc Variables équivalente au champs url de la table montagnes
 	* @var String
 	*/
 	 var $url;
 

 	/**
 	* @desc Constructeur de la class montagnes. Si à l'instenciation de la classe on lui donne un numéro de clé primaire, 
 	*  celle-ci instenciera la class avec toutes les infos dans la table montagnes concernant cette clé primaire.
 	* @access public
 	* @param	Bd	oBd
 	* @param int noMontagne
 	*/
 	 function Montagnes ( $oBd, $noMontagne = 0 ) { 
 	 	 $this->oBd = $oBd; 
  	 	 if( $noMontagne > 0 ) {  
  	 	 	 $this->noMontagne = $noMontagne; 
  	 	 	 $this->getInfos(); 
  	 	 } 
 	 }  
 
   	/**
 	* @desc Fonction mutatrice du champ noMontagne
 	* @access public
 	* @param intnoMontagne
 	*/
	function setNoMontagne ( $noMontagne ) {
		$this->noMontagne = intval( $noMontagne );
	}


 	/**
 	* @desc Fonction accesseur du champ noMontagne
 	* @access public
 	* @return int
 	*/
	 function getNoMontagne (){
	 	 return stripslashes( noMontagne);
	}


 	/**
 	* @desc Fonction mutatrice du champ nom
 	* @access public
 	* @param Stringnom
 	*/
	function setNom ( $nom ) {
		$this->nom = addslashes( $nom ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ nom
 	* @access public
 	* @return String
 	*/
	 function getNom(){
	 	 return stripslashes( $this->nom);
	}


 	/**
 	* @desc Fonction mutatrice du champ description
 	* @access public
 	* @param mixeddescription
 	*/
	function setDescription ( $description ) {
		$this->description = addslashes( $description ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ description
 	* @access public
 	* @return mixed
 	*/
	 function getDescription (){
	 	 return stripslashes( description);
	}


 	/**
 	* @desc Fonction mutatrice du champ latitude
 	* @access public
 	* @param mixedlatitude
 	*/
	function setLatitude ( $latitude ) {
		$this->latitude = addslashes( $latitude ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ latitude
 	* @access public
 	* @return mixed
 	*/
	 function getLatitude (){
	 	 return stripslashes( latitude);
	}


 	/**
 	* @desc Fonction mutatrice du champ longitude
 	* @access public
 	* @param mixedlongitude
 	*/
	function setLongitude ( $longitude ) {
		$this->longitude = addslashes( $longitude ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ longitude
 	* @access public
 	* @return mixed
 	*/
	 function getLongitude (){
	 	 return stripslashes( longitude);
	}


 	/**
 	* @desc Fonction mutatrice du champ url
 	* @access public

 	* @param Stringurl
 	*/
	function setUrl ( $url ) {
		$this->url = addslashes( $url ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ url
 	* @access public
 	* @return String
 	*/
	 function getUrl (){
	 	 return stripslashes( url);
	}


 	/**
 	* @desc Fonction mutatrice de la limite
 	* @access public
 	* @param string limite
 	*/
 	 function setLimite( $limite ) {  
 	 	 $this->limite =  $limite;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de l'ordre
 	* @access public
 	* @param string ordre
 	*/
 	 function setOrdre( $ordre ) {  
 	 	 $this->ordre =  $ordre;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de resultats
 	* @access public
 	* @return Array Resultats
 	*/
 	 function getResultats() {  
 	 	 return $this->resultats;
 	 }  
 
   	/**
 	* @desc Fonction d'ajout et de mise à jour des données.
 	* @access public
 	* @return int
 	*/
	 function sauvegarde() { 
  		 if( empty( $this->noMontagne ) ) { 
 			 $req = "INSERT INTO montagnes ( nom, description, latitude, longitude, url 	)  VALUES  (  '" . $this->nom . "' ,  '" . $this->description . "' ,  '" . $this->latitude . "' ,  '" . $this->longitude . "' ,  '" . $this->url . "' ) ON DUPLICATE KEY UPDATE nom =  '" . $this->nom . "' , description =  '" . $this->description . "' , latitude =  '" . $this->latitude . "' , longitude =  '" . $this->longitude . "' , url =  '" . $this->url . "' "; 
  			 $this->oBd->query( $req );
 			 $no = $this->oBd->getId(); 
 			 $this->noMontagne = $no; 
 		 } else { 
 			 $req = "UPDATE montagnes SET noMontagne = " . $this->noMontagne . ", nom =  '" . $this->nom . "' , description =  '" . $this->description . "' , latitude =  '" . $this->latitude . "' , longitude =  '" . $this->longitude . "' , url =  '" . $this->url . "'  WHERE noMontagne = " . $this->noMontagne;
 			 $this->oBd->query( $req );
 			 $no = $this->noMontagne;
 		 }
 		 return $no;  
 	 }  
  
  	/**
 	* @desc Fonction de recherche de données
 	* @access public
 	* @param string champs
 	*/
 	 function getInfos( $champs = "*" ) {
  		$variables = array( 'noMontagne','nom','description','latitude','longitude','url'); 
  		 $trouve = false; 
 		 $recherche = ' 1 = 1 '; 
 		 $operateurDebut = " = '"; 
 		 $operateurFin = "'"; 
 		 if( !$this->rechercheExact ) {  
  			 $operateurDebut = " LIKE '%"; 
  			 $operateurFin = "%'"; 
  		 }  
  		 for ( $i = 0; $i < count( $variables ); $i++ ) { 
 			if ( !empty( $this->$variables[ $i ] ) ) {  
 				 $trouve = true; 
 				 /* Ajout de l'opérateur */ 
  				 if ( !empty( $recherche ) ) { 
 					 $recherche .= " AND "; 
 				 } 
  				 $variable = $variables[ $i ];
 				 $tableau = $this->$variable;
 				 $valeur = $tableau;
 				 /* Concaténation des critères de recherche */ 
  				 if ( is_numeric( $valeur ) ) { 
 					 $recherche .= "montagnes." . $variables[ $i ] . " = " . $valeur. " "; 
 				 } else { 
 					 $recherche .= "montagnes." . $variables[ $i ] . $operateurDebut . addslashes( $valeur ) . $operateurFin; 
 				 } 
  			 } 
  		 }
  		 $infos = $this->oBd->query( "SELECT " . $champs . " FROM montagnes WHERE " . $recherche . $this->ordre . $this->limite ); 
 		 $this->resultats = $infos;
 		 $this->cleanup();
 		 for ( $i = 0; $i < count( $infos ); $i++ ) { 
	 	 	$this->noMontagne = $infos[ $i ][ 'noMontagne'] ; 
	 	 	$this->nom = $infos[ $i ][ 'nom'] ; 
	 	 	$this->description = $infos[ $i ][ 'description'] ; 
	 	 	$this->latitude = $infos[ $i ][ 'latitude'] ; 
	 	 	$this->longitude = $infos[ $i ][ 'longitude'] ; 
	 	 	$this->url = $infos[ $i ][ 'url'] ; 
 		 } 
  	} 
  	/**
 	* @desc Fonction de suppression des données.
 	* @access public
 	*/
 	function delete() {
 		 $req = "DELETE FROM montagnes WHERE noMontagne = " . $this->noMontagne; 
  		 $this->oBd->query( $req );
 	 } 

 	/**
 	* @desc Indique si la recherche dois etre exact ou pas ( true = LIKE '%x%' )" ),
 	* @access public
 	*/
 	 function setRechercheExact( $b ) {  
 	 	 $this->rechercheExact =  $b;  
 	 }  
 

   	/**
 	* @desc Fonction remet les variables membres à zéro
 	* @access private
 	*/
 	 function cleanup() { 
 	 	$this->noMontagne = array(); 
  	 	$this->nom = array(); 
  	 	$this->description = array(); 
  	 	$this->latitude = array(); 
  	 	$this->longitude = array(); 
  	 	$this->url = array(); 
  	 }  
 
}
?>